As improvements in networking technologies have facilitated greater transmission speeds, computers increasingly are being used to process information retrieved from networks rather than merely to process information via application programs. This has resulted in a growing amount of the operating capability of central processing units being used for networking processes for packets of information to the detriment of this operating capability being available for other operations. In addition to performing operations on headers and footers and extracting encapsulated data, such networking processes may also include establishing a connection to a network so that the sought information may be retrieved.
To alleviate this situation, offload engines have been developed to shift networking processes from central processing units to network interface controllers. In addition to freeing central processing units for other operations, offloading also reduces traffic through local input/output interconnects such as, for example, those operating under Peripheral Component Interconnect Express standards. Offload engines intended to operate according to the Internet protocol suite are known as Transmission Control Protocol (TCP) offload engines.
TCP offload engines generally may be classified into two categories. Partial TCP offload engines shift the data path from central processing units to network interface controllers and relieve central processing units from processing data transmissions and receptions. However, central processing units still perform the operations to establish connections to networks. Offloading from central processing units to network interface controllers occurs after network connections have been established. TCP Chimney Offload technology, developed by Microsoft Corporation, is an example of a partial TCP offload engine. In contrast, with full TCP offload engines, performance of both packet processing and the establishment of network connections is shifted to network interface controllers.
Regardless of whether a TCP offload engine is partial or full, the only criterion considered in current implementations is the load of the network interface controller. In operation, a current TCP offload engine automatically shifts networking processes from a central processing unit to a network interface controller so long as the load of the network interface controller is less than a full load.
In the drawings, the leftmost digit(s) of a reference number identifies the drawing in which the reference number first appears.